Computers have become increasingly interconnected via networks (such as the Internet), and security and authentication concerns have become increasingly important. Cryptographic techniques that involve a key-based cipher, for example, can take sequences of intelligible data (e.g., typically referred to as plaintext) that form a message and mathematically transform them into seemingly unintelligible data (e.g., typically referred to as ciphertext), through and enciphering process. In this example, the enciphering can be reversed, thereby allowing recipients of the ciphertext with an appropriate key to transform the ciphertext back to plaintext, while making it very difficult, if not nearly impossible, for those without the appropriate key from recovering the plaintext.
Public-key cryptographic techniques are an embodiment of key-based cipher. In public-key cryptography, for example, respective communicating parties have a public/private key pair. The public key of the respective pairs is made publicly available (e.g., or at least available to others who are intended to send encrypted communications), and the private key is kept secret. In order to communicate a plaintext message using encryption to a receiving party, for example, an originating party can encrypt the plaintext message into a ciphertext message using the public key of the receiving party and communicate the ciphertext message to the receiving party. In this example, upon receipt of the ciphertext message, the receiving party can decrypt the message using its secret private key, thereby recovering the original plaintext message.
An example of public/private key cryptology comprises generating two large prime numbers and multiplying them together to get a large composite number, which is made public. In this example, if the primes are properly chosen and large enough, it may be extremely difficult (e.g., practically impossible due to computational infeasibility) for someone who does not know the primes to determine them from just knowing the composite number. However, in order to be secure, the size of the composite number should be more than 1,000 bits. In some situations, such a large size makes impractical to be used.
An example of authentication is where a party or a machine attempts to prove that it is authorized to access or use a product or service. Often, a product ID system is utilized for a software program(s), where a user enters a product ID sequence stamped on the outside of the properly licensed software package as proof that the software has been properly paid for. If the product ID sequence is too long, then it will be cumbersome and user unfriendly. Other common examples include user authentication, when a user identifies themselves to a computer system using an authentication code.
As another example, in cryptography, elliptic curves are often used to generate cryptographic keys. An elliptic curve is a mathematical object that has a structure and properties well suited for cryptography. Many protocols for elliptic curves have already been standardized for use in cryptography. Further, genus 2 curves can be used with cryptography; however, unlike the case of elliptic curves (which are genus 1 curves), protocols for these genus 2 curves have not been standardized.